package com.ykfsdk.app;

import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.Toast;

import com.m7.imkfsdk.KfStartHelper;
import com.m7.imkfsdk.constant.Constants;
import com.m7.imkfsdk.utils.permission.PermissionConstants;
import com.m7.imkfsdk.utils.permission.PermissionXUtil;
import com.m7.imkfsdk.utils.permission.callback.OnRequestCallback;
import com.m7.imkfsdk.utils.statusbar.StatusBarUtils;
import com.moor.imkf.IMChatManager;
import com.moor.imkf.model.entity.CardInfo;
import com.moor.imkf.model.entity.NewCardInfo;
import com.moor.imkf.model.entity.NewCardInfoAttrs;
import com.moor.imkf.requesturl.RequestUrl;
import com.moor.imkf.utils.MoorUtils;

import java.net.URLEncoder;
import java.util.Locale;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private SharedPreferences spData;
    private int themeType;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        spData = this.getSharedPreferences("moordata", 0);
        themeType = spData.getInt(Constants.SYSTHEME, 0);
        if (themeType == 0) {
            setTheme(com.m7.imkfsdk.R.style.KFSdkAppTheme);
        } else if (themeType == 1) {
            setTheme(com.m7.imkfsdk.R.style.KFSdkAppTheme1);
        }
        setContentView(R.layout.kf_activity_main);
        StatusBarUtils.setColor(this, getResources().getColor(R.color.all_white));
        findViewById(R.id.button).setOnClickListener(this);
        findViewById(R.id.setting).setOnClickListener(this);

    }

    //更换主题颜色
    private void switchTheme() {
        themeType = themeType == 0 ? 1 : 0;
        SharedPreferences.Editor edit = spData.edit();
        edit.putInt(Constants.SYSTHEME, themeType).apply();
        recreate();
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.button) {
            //初始化SDK
            PermissionXUtil.checkPermission(MainActivity.this, new OnRequestCallback() {
                @Override
                public void requestSuccess() {
                    initSdk();
                }
            }, PermissionConstants.STORE, PermissionConstants.PHONE_STATE);

        } else if (v.getId() == R.id.setting) {
            //获取未读消息数示例
            getUnReadCount();
            switchTheme();
        }
    }

    /**
     * 初始化SDK
     */
    private void initSdk() {
        //设置sdk 显示语言版本
   //    initLanguage("en");
        /*
          第一步:初始化help
         */

        final KfStartHelper helper = new KfStartHelper(this);



        /*
          商品信息实例，若有需要，请参照此方法；
        */
//        handleCardInfo(helper);

         /*
          新卡片类型示例，若有需要，请参照此方法；
         */
//        handleNewCardInfo(helper);

        /**
         * 第二步：设置服务环境
         * setRequestUrl() 与 setRequestBasic()，为二选一调用
         * 腾讯云，阿里云用户只使用setRequestBasic即可。
         * 私有云用户只使用setRequestUrl即可。
         */

//        /**1:
//         * 设置服务环境 阿里 或 腾讯,可以联系技术支持确认您的服务环境
//         * 要在helper.initSdkChat()之前设置
//         * RequestUrl.ALIYUN_REQUEST;//阿里云环境
//         * RequestUrl.Tencent_REQUEST;//腾讯云环境
//         */
        RequestUrl.setRequestBasic(RequestUrl.Tencent_REQUEST);


         /**2:
         * 开放给私有云客户 设置地址的接口
          * 要在helper.initSdkChat()之前设置
          */
//        RequestUrl.setRequestUrl();

        /**2.1
        * 开放给私有云客户 设置文件服务地址的接口，如果私有云后端配置了文件服务器则需要调用。
        * 要在helper.initSdkChat()之前设置
         * 示例：RequestUrl.setFileUrl( "https://im-fileserver:8000/",new String[]{"im-fileserver:8000"},true)
         */
//        RequestUrl.setFileUrl( "完整的服务地址",new String[]{"只需填写中间域名以及端口部分"},是否为https);


        /*
          第三步:设置参数
          初始化sdk方法，必须先调用该方法进行初始化后才能使用IM相关功能
          @param accessId       接入id（需后台配置获取）
          @param userName       用户名
          @param userId         用户id
         */

        helper.initSdkChat("e3e94880-xxxx-xxxx-xxxx-7dea7e653a8e", "", "");
        //helper.initSdkChat("xxxxx", "18903958133", "4");

    }
    /**
     * 获取未读消息数示例
     */
    private void getUnReadCount() {
        if (MoorUtils.isInitForUnread(getApplicationContext())) {

            IMChatManager.getInstance().getMsgUnReadCountFromService(new IMChatManager.HttpUnReadListen() {
                @Override
                public void getUnRead(int acount) {
                    Toast.makeText(MainActivity.this, "未读消息数为：" + acount, Toast.LENGTH_SHORT).show();
                }
            });
        } else {
            //未初始化，消息当然为 ：0
            Toast.makeText(MainActivity.this, "还没初始化", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 商品信息示例
     *
     * @param helper
     */
    private void handleCardInfo(KfStartHelper helper) {
        String s = "https://wap.boosoo.com.cn/bobishop/goodsdetail?id=10160&mid=36819";
//        String s = "https://share1.atoshi.cn/#/productdetail?productId=376&userId=100123350544";
        CardInfo ci = new CardInfo("http://seopic.699pic.com/photo/40023/0579.jpg_wh1200.jpg", "我是一个标题当初读书", "我是name当初读书。", "价格 1000-9999", "https://www.baidu.com");
        String icon = "https://www.tianxiadengcang.com//index.php?m=Api&c=Goods&a=goodsThumImages&width=200&height=200&goods_id=168";
        String title = "美式北欧吊灯家居灯卧室客厅书房餐厅灯D1-31008-12头";
        String content = "8头/φ520*H350/96W 天下灯仓包装 黑色";
        String rigth3 = " ¥548.00";
        try {
            ci = new CardInfo(URLEncoder.encode(icon, "utf-8"), URLEncoder.encode(title, "utf-8"),
                    URLEncoder.encode(content, "utf-8"), URLEncoder.encode(rigth3, "utf-8"),
                    URLEncoder.encode(s, "utf-8"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        helper.setCard(ci);
    }

    /**
     * 新卡片类型示例,{@link NewCardInfo.Builder()} Builder中默认添加了一些字段，请在此自行定制
     */
    private void handleNewCardInfo(KfStartHelper helper) {
//        NewCardInfo newCardInfo = new NewCardInfo.Builder()
//                .build();

        NewCardInfo newCardInfo = new NewCardInfo.Builder()
                .setTitle("我是标题")
                .setAttr_one(new NewCardInfoAttrs().setColor("#487903").setContent("x9"))
                .setAttr_two(new NewCardInfoAttrs().setColor("#845433").setContent("未发货"))
                .setOther_title_one("附件信息")
                .setOther_title_two(null)
                .setOther_title_three(null)
                .setSub_title("我是副标题")
                .setPrice("$999")
                .build();


        helper.setNewCardInfo(newCardInfo);
    }


    /**
     * 语言切换
     * 中文 language：""
     * 英文 language："en"
     */
    private void initLanguage(String language) {
        Resources resources = getApplicationContext().getResources();
        Configuration configuration = resources.getConfiguration();
        configuration.locale = new Locale(language);
        resources.updateConfiguration(configuration, resources.getDisplayMetrics());//更新配置
    }


}
